package cn.jmi.jmiopenatommanagementsystem.pojo;

import jakarta.persistence.*;
import lombok.Data;

/**
 * 用户实体类
 * 映射数据库中的用户表，使用JPA注解进行对象-关系映射(ORM)
 *
 * @Entity 注解：标识该类是一个JPA实体类，将与数据库表进行映射
 * @Table 注解：指定映射的数据库表名，name属性指定表名为"tb_user"
 * @Data 注解：Lombok注解，自动生成getter、setter、toString、equals、hashCode等方法
 */
@Entity
@Table(name = "tb_user")
@Data
public class User {

    /**
     * 用户ID - 主键
     * @Id 注解：标识该字段为主键
     * @GeneratedValue 注解：指定主键生成策略
     *   strategy = GenerationType.IDENTITY：使用数据库的自增主键（如MySQL的AUTO_INCREMENT）
     * @Column 注解：映射数据库表中的列
     *   name = "user_id"：指定对应的数据库列名为"user_id"
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_id")
    private Long id;

    /**
     * 用户名
     * @Column 注解：映射到数据库表中的"user_name"列
     */
    @Column(name = "user_name")
    private String username;

    /**
     * 用户学号
     * @Column 注解：映射到数据库表中的"user_student_id"列
     */
    @Column(name = "user_student_id")
    private String userStudentId;

    /**
     * 用户班级
     * @Column 注解：映射到数据库表中的"user_class"列
     */
    @Column(name = "user_class")
    private String userClass;

    /**
     * 用户院系/部门
     * @Column 注解：映射到数据库表中的"user_department"列
     */
    @Column(name = "user_department")
    private String userDepartment;

    /**
     * 用户邮箱
     * @Column 注解：映射到数据库表中的"user_email"列
     */
    @Column(name = "user_email")
    private String userEmail;


}